/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.patpro.comtrolador;


import com.patpro.DAO.ObrasDAO;
import com.patpro.TO.ObraTO;
import com.patpro.entidades.Estadoobra;
import com.patpro.entidades.Fuentefinanciamiento;
import com.patpro.entidades.Obras;
import com.patpro.entidades.Programacion;
import com.patpro.entidades.Tipocontrato;
import com.patpro.helper.conversiones;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author EVELIN
 */
public class ControladorBasico extends HttpServlet {
 private ObrasDAO obraDAO;
 private Tipocontrato tipocontratoDAO;
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         String operacion=null;
        try {
            
             operacion=request.getParameter("op");
            
        }catch(Exception e){
        
        
        }
            if(operacion==null){
            
            response.sendRedirect("inicio.jsp");
            
            }
           else if(operacion.equalsIgnoreCase("1")){
            response.sendRedirect("inicio.jsp");
           }
            else if(operacion.equalsIgnoreCase("2")){
               
               List<Tipocontrato> IdTipoContrato=obraDAO.getListaTipoContrato();
                List<Estadoobra> IdEstadoobra=obraDAO.getListaEstado();
                 List<Fuentefinanciamiento> IdFuentefinanciamiento=obraDAO.getListaFuenteFinanciamiento();
                 List<Programacion> IdProgramacion=obraDAO.getListaProgramacion();
                
              
               request.setAttribute("IdTipoContrato",IdTipoContrato);
               request.setAttribute("IdEstadoobra", IdEstadoobra);
                request.setAttribute("IdFuentefinanciamiento", IdFuentefinanciamiento);
                 request.setAttribute("IdProgramacion", IdProgramacion);
                
                
                
               RequestDispatcher rd=request.getRequestDispatcher("/insertar.jsp");
                   rd.forward(request,response);
                
           //response.sendRedirect("insertar.jsp");
            }
           else if(operacion.equalsIgnoreCase("guardar"))
           {
          
                String codigo=request.getParameter("codigo");
                String ubicacion=request.getParameter("ubicacion");
                String Duracion=request.getParameter("Duracion");
                 String contratista=request.getParameter("Contratista");
                  String idTipoContrato= request.getParameter("slIdTipoContrato");
                String IdEstadoobra= request.getParameter("slIdEstadoobra");
                String IdFuentefinanciamiento= request.getParameter("slIdFuentefinanciamiento");
               String IdProgramacion= request.getParameter("slIdProgramacion");
                 if(this.obraDAO.insertarObra(conversiones.convertirObraTO_to_Obra(new ObraTO(codigo,ubicacion,Duracion,contratista,idTipoContrato,IdEstadoobra,IdProgramacion,IdFuentefinanciamiento))))
                   { response.sendRedirect("Exito.jsp");
                    }else{    response.sendRedirect("Error.jsp");
                 }
           }else if(operacion.equalsIgnoreCase("4")){
            List<ObraTO> lista=conversiones.convertirListaObra_to_ListaObraTO(obraDAO.getListaObra());
            request.setAttribute("obras",lista);
             RequestDispatcher rd=request.getRequestDispatcher("listar_obras.jsp");
            rd.forward(request,response);
            }else if(operacion.equalsIgnoreCase("eliminar"))
            {   String codigo=request.getParameter("codigo");
                 if(obraDAO.eliminarObra(codigo)){
                     response.sendRedirect("Exito.jsp");
                     }else  { response.sendRedirect("Error.jsp");}  
           }else if(operacion.equalsIgnoreCase("3"))
           {
           List<Estadoobra> eo=obraDAO.getListaEstado();
               request.setAttribute("estado",eo);
               RequestDispatcher rd=request.getRequestDispatcher("/buscar.jsp");
           rd.forward(request,response);
          } else if(operacion.equalsIgnoreCase("buscar"))
           {
                 String slestado=request.getParameter("slestado");
                 List<ObraTO> lista=conversiones.convertirListaObra_to_ListaObraTO(obraDAO.getListaObras(slestado));
                 request.setAttribute("obras",lista);
                  RequestDispatcher rd=request.getRequestDispatcher("/lista_obras_estado.jsp");
                 rd.forward(request,response);
           
           }else if(operacion.equalsIgnoreCase("modificar")){
                 String codigo=request.getParameter("codigo");
                    List<Tipocontrato> IdTipoContrato=obraDAO.getListaTipoContrato();
                     List<Estadoobra> IdEstadoobra=obraDAO.getListaEstado();
                 List<Fuentefinanciamiento> IdFuentefinanciamiento=obraDAO.getListaFuenteFinanciamiento();
                 List<Programacion> IdProgramacion=obraDAO.getListaProgramacion();
                
                    
                    
               List<ObraTO> lista=conversiones.convertirListaObra_to_ListaObraTO(obraDAO.getObras(codigo));
                 request.setAttribute("IdTipoContrato",IdTipoContrato);
              request.setAttribute("IdEstadoobra", IdEstadoobra);
                request.setAttribute("IdFuentefinanciamiento", IdFuentefinanciamiento);
                 request.setAttribute("IdProgramacion", IdProgramacion);
                
                request.setAttribute("obras",lista);
                
                 RequestDispatcher rd=request.getRequestDispatcher("/modificar.jsp");
                 rd.forward(request,response);
           }
             else if(operacion.equalsIgnoreCase("guardarM"))
           {
          
                String codigo=request.getParameter("codigo");
                String ubicacion=request.getParameter("ubicacion");
                String Duracion=request.getParameter("Duracion");
                 String contratista=request.getParameter("Contratista");
                  String idTipoContrato= request.getParameter("slIdTipoContrato");
                String IdEstadoobra= request.getParameter("slIdEstadoobra");
                String IdFuentefinanciamiento= request.getParameter("slIdFuentefinanciamiento");
               String IdProgramacion= request.getParameter("slIdProgramacion");
                 if(this.obraDAO.ModificarObra(conversiones.convertirObraTO_to_Obra(new ObraTO(codigo,ubicacion,Duracion,contratista,idTipoContrato,IdEstadoobra,IdProgramacion,IdFuentefinanciamiento))))
                   { response.sendRedirect("Exito.jsp");
                    }else{    response.sendRedirect("Error.jsp");
                 }
           }
         
    }  
    
      @Override
    public void destroy() {
       obraDAO.closeEntityManager();//To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void init() throws ServletException {
    
        this.obraDAO=new ObrasDAO();
    }


    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
